27 research outputs found
Super-Droplet Approach to Simulate Precipitating Trade-Wind Cumuli - Comparison of Model Results with RICO Aircraft Observations
In this study we present a series of LES simulations employing the
Super-Droplet Method (SDM) for representing aerosol, cloud and rain
microphysics. SDM is a particle-based and probabilistic approach in which a
Monte-Carlo type algorithm is used for solving the particle collisions and
coalescence process. The model does not differentiate between aerosol
particles, cloud droplets, drizzle or rain drops. Consequently, it covers
representation of such cloud-microphysical processes as: CCN activation,
drizzle formation by autoconversion, accretion of cloud droplets,
self-collection of raindrops and precipitation including aerosol wet
deposition. Among the salient features of the SDM, there are: (i) the
robustness of the model formulation (i.e. employment of basic principles rather
than parametrisations) and (ii) the ease of comparison of the model results
with experimental data obtained with particle-counting instruments.
The model set-up used in the study is based on observations from the Rain In
Cumulus over Ocean (RICO) field project (the GEWEX Cloud System Study Boundary
Layer Cloud Working Group RICO case). Cloud and rain droplet size spectrum
features obtained in the simulations are compared with previously published
aircraft observations carried out during the RICO field project. The analysis
covers height-resolved statistics of simulated cloud microphysical parameters
such as droplet number concentration, effective radius, and the width of the
cloud droplet size spectrum. The sensitivity of the results to the grid
resolution of the LES, as well as to the sampling density of the probabilistic
(Monte-Carlo type) model is discussed.Comment: Paper presented at the 16-th International Conference on Clouds and
Precipitation ICCP-2012, Leipzig, Germany. Revised version with corrected LWC
plots in Figures 2,3 and 4, and an updated discussion of the LWC plots in
section 4.
Object-oriented implementations of the MPDATA advection equation solver in C++, Python and Fortran
Three object-oriented implementations of a prototype solver of the advection
equation are introduced. The presented programs are based on Blitz++ (C++),
NumPy (Python), and Fortran's built-in array containers. The solvers include an
implementation of the Multidimensional Positive-Definite Advective Transport
Algorithm (MPDATA). The introduced codes exemplify how the application of
object-oriented programming (OOP) techniques allows to reproduce the
mathematical notation used in the literature within the program code. A
discussion on the tradeoffs of the programming language choice is presented.
The main angles of comparison are code brevity and syntax clarity (and hence
maintainability and auditability) as well as performance. In the case of
Python, a significant performance gain is observed when switching from the
standard interpreter (CPython) to the PyPy implementation of Python. Entire
source code of all three implementations is embedded in the text and is
licensed under the terms of the GNU GPL license
libcloudph++ 0.2: single-moment bulk, double-moment bulk, and particle-based warm-rain microphysics library in C++
This paper introduces a library of algorithms for representing cloud
microphysics in numerical models. The library is written in C++, hence the name
libcloudph++. In the current release, the library covers three warm-rain
schemes: the single- and double-moment bulk schemes, and the particle-based
scheme with Monte-Carlo coalescence. The three schemes are intended for
modelling frameworks of different dimensionality and complexity ranging from
parcel models to multi-dimensional cloud-resolving (e.g. large-eddy)
simulations. A two-dimensional prescribed-flow framework is used in example
simulations presented in the paper with the aim of highlighting the library
features. The libcloudph++ and all its mandatory dependencies are free and
open-source software. The Boost.units library is used for zero-overhead
dimensional analysis of the code at compile time. The particle-based scheme is
implemented using the Thrust library that allows to leverage the power of
graphics processing units (GPU), retaining the possibility to compile the
unchanged code for execution on single or multiple standard processors (CPUs).
The paper includes complete description of the programming interface (API) of
the library and a performance analysis including comparison of GPU and CPU
setups.Comment: The library description has been updated to the new library API (i.e.
v0.1 -> v0.2 update). The key difference is that the model state variables
are now mixing ratios as opposed to densities. The particle-based scheme was
supplemented with the "particle recycling" process. Numerous editorial
corrections were mad
PyPartMC: A Pythonic interface to a particle-resolved, Monte Carlo aerosol simulation framework
PyPartMC is a Pythonic interface to PartMC, a stochastic, particle-resolved
aerosol model implemented in Fortran. Both PyPartMC and PartMC are free, libre,
and open-source. PyPartMC reduces the number of steps and mitigates the effort
necessary to install and utilize the resources of PartMC. Without PyPartMC,
setting up PartMC requires: working with UNIX shell, providing Fortran and C
libraries, and performing standard Fortran and C source code configuration,
compilation and linking. This can be challenging for those less experienced
with computational research or those intending to use PartMC in environments
where provision of UNIX tools is less straightforward (e.g., on Windows).
PyPartMC offers a single-step installation process of PartMC and all
dependencies through the pip Python package manager on Linux, macOS, and
Windows. This allows streamlined access to the unmodified and versioned Fortran
internals of the PartMC codebase from both Python and other interoperable
environments (e.g., Julia through PyCall). Consequently, users of PyPartMC can
setup, run, process and visualize output of PartMC simulations using a single
general-purpose programming language
PySDM v1 : particle-based cloud modeling package for warm-rain microphysics and aqueous chemistry
PySDM is an open-source Python package for simulating the dynamics of
particles undergoing condensational and collisional growth, interacting with a
fluid flow and subject to chemical composition changes. It is intended to serve
as a building block for process-level as well as computational-fluid-dynamics
simulation systems involving representation of a continuous phase (air) and a
dispersed phase (aerosol), with PySDM being responsible for representation of
the dispersed phase. The PySDM package core is a Pythonic high-performance
implementation of the Super-Droplet Method (SDM) Monte-Carlo algorithm for
representing collisional growth, hence the name. PySDM has two alternative
parallel number-crunching backends available: multi-threaded CPU backend based
on Numba and GPU-resident backend built on top of ThrustRTC. The usage examples
are built on top of four simple atmospheric cloud modelling frameworks: box,
adiabatic parcel, single-column and 2D prescribed flow kinematic models. In
addition, the package ships with tutorial code depicting how PySDM can be used
from Julia and Matlab